function [data_random] = spambase_read(file_txt)
    % 读取Spambase数据集文件
    data = dlmread(file_txt, ',');  % 使用逗号分隔符读取数值数据
    
    % 分离特征和标签
    features = data(:, 1:end-1);  % 前57列是特征
    labels = data(:, end);         % 最后一列是标签（0=非垃圾邮件, 1=垃圾邮件）
    
    % 获取数据集信息
    num_samples = size(data, 1);
    num_features = size(features, 2);
    
    % 显示数据集统计信息
    fprintf('成功读取Spambase数据集: %s\n', file_txt);
    fprintf('样本数量: %d\n', num_samples);
    fprintf('特征数量: %d\n', num_features);
    
    % 显示类别分布
    spam_count = sum(labels == 1);
    non_spam_count = sum(labels == 0);
    spam_percent = spam_count / num_samples * 100;
    non_spam_percent = non_spam_count / num_samples * 100;
    
    fprintf('\n类别分布:\n');
    fprintf('  非垃圾邮件 (0): %d (%.2f%%)\n', non_spam_count, non_spam_percent);
    fprintf('  垃圾邮件 (1): %d (%.2f%%)\n', spam_count, spam_percent);
    
    % 显示特征组统计
    fprintf('\n特征组统计:\n');
    fprintf('  词频特征 (1-48): 特定单词在邮件中的出现百分比 [0-100]\n');
    fprintf('  字符频率特征 (49-54): 特定字符在邮件中的出现百分比 [0-100]\n');
    fprintf('  大写字母序列特征:\n');
    fprintf('    (55) 平均连续大写字母长度: [1,...]\n');
    fprintf('    (56) 最长连续大写字母长度: [1,...]\n');
    fprintf('    (57) 总大写字母长度: [1,...]\n');
    
    % 验证关键特征范围
    fprintf('\n关键特征范围验证:\n');
    
    % 验证词频特征范围 (0-100)
    word_freq_min = min(min(features(:, 1:48)));
    word_freq_max = max(max(features(:, 1:48)));
    fprintf('  词频特征范围: %.2f%% 到 %.2f%%\n', word_freq_min, word_freq_max);
    
    % 验证字符频率特征范围 (0-100)
    char_freq_min = min(min(features(:, 49:54)));
    char_freq_max = max(max(features(:, 49:54)));
    fprintf('  字符频率特征范围: %.2f%% 到 %.2f%%\n', char_freq_min, char_freq_max);
    
    % 验证大写字母特征
    cap_avg_min = min(features(:, 55));
    cap_avg_max = max(features(:, 55));
    fprintf('  平均连续大写字母长度: %.2f 到 %.2f\n', cap_avg_min, cap_avg_max);
    
    cap_longest_min = min(features(:, 56));
    cap_longest_max = max(features(:, 56));
    fprintf('  最长连续大写字母长度: %d 到 %d\n', cap_longest_min, cap_longest_max);
    
    cap_total_min = min(features(:, 57));
    cap_total_max = max(features(:, 57));
    fprintf('  总大写字母长度: %d 到 %d\n', cap_total_min, cap_total_max);
    
    % 合并标签和特征（标签在第一列）
    data_combined = [labels, features];
    
    % 随机打乱数据
    random_indices = randperm(size(data_combined, 1));
    data_random = data_combined(random_indices, :);
    
    % 显示打乱后的前几个样本的标签分布
    fprintf('\n数据已随机打乱，前5个样本的标签:\n');
    disp(data_random(1:5, 1)');
end